package com.naiterui.ehp.bs.agent.service;

import com.naiterui.common.repository.page.PageParamVO;
import com.naiterui.common.repository.page.PageVO;
import com.naiterui.ehp.bp.bo.agent.AgentCustomBO;
import com.naiterui.ehp.bp.bo.agent.CustomOrderInfoBO;
import com.naiterui.ehp.bp.bo.statistics.CustomOrderReportBO;
import com.naiterui.ehp.bp.bo.statistics.CustomProductReportBO;
import com.naiterui.ehp.bp.bo.statistics.CustomRecipelConsultReportBO;
import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.bs.agent.po.CustomPagePO;
import com.naiterui.ehp.bs.agent.vo.AgentCustomItemVO;
import com.naiterui.ehp.bs.agent.vo.CustomAppDetailVO;
import com.naiterui.ehp.bs.agent.vo.CustomDetailVO;
import com.naiterui.ehp.bs.agent.vo.CustomOrderListVO;

/**
 * 客户
 * 
 * @author yangfuya
 * @since 2022/2/18
 */
public interface ICustomService {

    /**
     * 获取昨日订单列表
     * 
     * @param paramVO
     * @param customId
     * @param orderSn
     * @return
     */
    PageVO<CustomOrderListVO> getOrderList(PageParamVO paramVO, Long customId, String orderSn) throws BusinessException;

    /**
     * 客户详情-数据报表处方相关
     */
    CustomRecipelConsultReportBO getRecipelAndConsult(Long customId, Integer reportType, String reportDate);

    /**
     * 客户详情-数据报告药品
     */
    CustomProductReportBO getProduct(Long customId, Integer reportType, String reportDate);

    /**
     * 客户详情-数据报告订单
     */
    CustomOrderReportBO getOrder(Long customId, Integer reportType, String reportDate);

    /**
     * 获取医生所归属信息
     */
    AgentCustomBO getAgentCustomByDoctorId(Long doctorId);

    /**
     * 获取订单详情
     */
    CustomOrderInfoBO getOrderDetail(String orderSn) throws BusinessException;

    /**
     * 查询客户列表
     * @param pageParamVO
     * @param customPagePO
     * @return
     */
    PageVO<AgentCustomItemVO> findCustomPage(PageParamVO pageParamVO, CustomPagePO customPagePO);

    /**
     * 修改客户星级
     *
     * @param agentId
     * @param customId
     * @param starLev
     */
    void updateStarLev(Long agentId, Long customId, Integer starLev) throws BusinessException;

    /**
     * 查询客户详情
     * @param customId
     * @return
     */
    CustomDetailVO getDetail(Long agentId, Long customId) throws BusinessException;

    /**
     * 客户端APP详情
     * @return
     */
    CustomAppDetailVO getCustomAppDetail();
}
